package demo02;

import java.util.HashSet;

/*
 *  Set集合不允许存储重复元素的原理
 *  HashSet存储元素时，先调用元素的hashCode方法，判断集合中是否有相同哈希值的元素
 *      如果没有，则添加元素
 *      如果有，产生哈希冲突，就要调用equals方法，判断存储的元素与已有的哈希值相同元素是否是同一个元素
 *          如果不是，则添加元素，她们挂在同一个哈希值下
 *          如果是，则不会添加该元素，元素重复了
 */
public class Demo02HashSetSaveString {
    public static void main(String[] args) {
        HashSet<String> hashSet = new HashSet<>(); // 创建HashSet集合对象
        String string = new String("abc");
        String string2 = new String("abc");
        hashSet.add(string);
        hashSet.add(string2);
        hashSet.add("abc"); // 集合放入了三次abc，结果只有一个abc
        hashSet.add("重地");
        hashSet.add("通话"); // 这两个字符串哈希值相同，却都存储了进去
        System.out.println(hashSet); // [重地, 通话, abc]
    }
}
